GEYERSOFT pr„sentiert: KOMMANDOSHELL der ">"-Art, MSDOS-„hnlich Version 2.08 written by Wolfgang Ambrosch Gregor Mendelstraže 11/2/25 A-2514 Traiskirchen Tel. 02252/52 83 14 last update 23.12.88 Es handelt sich bei der vorliegenden Version noch nicht um die von mir angestrebte Endversion, es k”nnen daher im Betrieb durchaus noch Fehler auftreten (dafr ist die Shell Public-Domain und daher gratis!). Ich fhle mich fr jeden Fehler verantwortlich, hafte jedoch nicht fr etwaige Folgen. Den kommentierten Quelltext in C und Assembler gebe ich auf Anfrage und eine entsrechende Spende gerne weiter. Bemerkungen zur Entstehung: Mit dem Erwerb einer Festplatte begann bei mir zun„chst nicht das goldene Zeitalter, sondern vor allem das Problem mit den vielen Fenstern und Laufwerken. Anstatt drei Laufwerken standen nun 6 auf meinem Desktop, und vor allem bei der Programmentwicklung waren die wichtigen Tools auf mindestens drei Fenster aufgeteilt, die nach jedem Programmlauf wieder neu aufgebaut werden mužten. Ein zus„tzliches Problem war die MEGAMAX-Graphic-Shell, deren ansonsten recht praktische Fileselectorboxen nur Laufwerke bis F: kennen; meinen RAMDISK hat aber leider die Bezeichnung G:. Die L”sung dieser Probleme ist diese Shell, die sicher nicht "alles" kann, dafr aber recht klein ist und so noch anderen Programmen sowie einer grožen Ramdisk Platz l„žt. Geschrieben wurde sie eigentlich haupts„chlich wegen des 'PATH'-Kommandos; alle anderen Features sind nur deswegen vorhanden, damit ich nicht dauernd aussteigen und Dinge doch noch im Desktop erledigen muž oder st„ndig gebrauchte Hilfen wie "COPY" immer zuerst nachgeladen werden. Wer's (etwa von UNIX oder MSDOS) noch nicht kennt, dem sei das Feeling, das 'PATH' in Verbindung mit einer Festplatte bietet, einmal kurz beschrieben: Zum Beispiel sind beim Entwickeln von C-Programmen meine Sourcecodes und Libraries wegen der Geschwindigkeit auf der Ramdisk G:, der Compiler auf D:\COM, und diverse Utilities in C:\USR. Mit "PATH C:\ USR\;D:\COM\" weise ich die Shell an, ein eingetipptes Kommando zun„chst in der internen Kommandoliste und im momentanen Directory zu suchen (was immer getan wird), sodann aber in C:\USR und, wenn das Programm dort noch immer nicht zu finden ist, in D:\COM. Ohne st„ndig in Fenstern whlen zu mssen, habe ich damit alle Hilfsprogramme, die in den angegebenen Directories vorhanden sind, st„ndig im Zugriff; zudem kann die Pfadeliste ja noch erweitert werden. Einige Features: Batchfiles (*.BAT) mit Parameterersetzung ($0 - $9) Es k”nnen *.PRG,*.TOS,*.TTP,*.BAT - Dateien gestartet werden Auch GEM-Programme werden fehlerfrei gestartet Aufrufen von Acessories (*.ACC) ist m”glich. Setzen von Suchpfaden ist m”glich (PATH - Befehl) Die Shell untersttzt "Output-Redirection" Das File AUTOEXEC.BAT wird, wenn vorhanden, nach dem Start automatisch geladen und ausgefhrt Eine History-Funktion ist eingebaut (die letzen eingetippten Zeilen k”nnen mit den Tasten 'CURSOR UP' und 'CURSOR DOWN' erreicht werden. Argumente, die in Anfhrungszeichen (") eingeschlossen sind, werden nicht geteilt (interessant z.B. bei ECHO) Batch-Programme mit IF-ELSE-ENDIF sowie GOTO Die Shell ist 'case-sensitive', d.h. Grož- und Kleinbuchstaben werden unterschieden. Zur Parameterersetzung Werden einem Batch-Programm Parameter bergeben, so k”nnen diese mit den symbolischen Bezeichnungen $1 - $9 angesprochen werden (es sind also maximal 9 Parameter sinvoll - weitere werden ignoriert). Der Bezeichner $0 bezieht sich auf den Namen des Kommandos. Ein Beispiel: folgendes Batch-Programm (Extension .BAT) compiliert und linkt ein Programm. COMPILER $1.c LINKER $1.o -o $1.tos Wenn dieses Batch-Programm zum Beispiel 'CL' heižt, k”nnen sie folgende Zeile eingeben: CL test Die Shell macht daraus: COMPILER test.c LINKER test.o -o test.tos Zu den Environment-Variablen Das 'Environment' ist eine Liste von Null-terminierten Strings, deren Adresse jedem aufgerufenen Programm mitgegeben wird. Jeder String ist von der Form 'NAME=IRGENDWAS', wobei 'NAME' der Name der betreffenden Environmentvariablen ist, und 'IRGENDWAS' ihr Inhalt. Diese Variablen k”nnen auch von der Shell aus genutzt werden. Nehmen wir an, sie definieren eine Variable mit set EDITOR=C:\USR\VI.PRG Diese Variable wird Teil des Environments. Sie k”nnen nun den Editor auch mit folgender Zeile erreichen: $EDITOR Die Shell macht daraus: C:\USR\VI.PRG und startet ihren Editor aus dem richtigen Verzeichnis (egal, wo sie gerade sind). Sollte nach dem Variablennamen nicht mindestens in Leer¸ zeichen oder das Zeilenende folgen, ist der Name zus„tzlich mit runden Klammern einzuschliežen, in unserem Beispiel also $(EDITOR). Dieses Feature kann viel Tipparbeit sparen - vergessen sie aber nicht, daž Grož- und Kleinschreibung bei ihren Namen beachtet wird! šbrigens: set EDITOR= l”scht den Eintrag "EDITOR" in der Environmentliste wieder. Zur ALIAS-Kommandoersetzung Žhnlich wie die Verwaltung der Environment-Variablen funktioniert die Verwaltung der alias-Liste. Sie dient ebenfalls dazu, Tipparbeit zu sparen, ersetzt aber, anders als die Variablen, nur das erste Wort in einer Zeile durch einen beliebigen Text. Analog zum obigen Beispiel k”nnen wir definieren: alias EDITOR=C:\USR\VI.PRG In der Zeile EDITOR command.c Wird nun der EDITOR durch C:\USR\VI.PRG ersetzt, und tats„chlich aus¸ gefhrt wird dann die Zeile "C:\USR\VI.PRG command.c". Zur Input/Output-Redirection Manchmal kann es sehr praktisch sein, eine Ausgabe, zum Beispiel die des "dir"-Befehles, nicht auf dem Bildschirm, sondern in einer Datei zu haben. Dazu dient die "Redirection". Die Zeile dir *.c >file schreibt die Ausgabe von "dir" in das File "file". Auch das Anh„ngen an ein bestehendes File ist m”glich. Mit dir *.h >>file wird an das vorher angelegt File zus„tzlich die Ausgabe des zweiten "dir"-Befehles angeh„ngt. Fr die Druckerausgabe (an der parallelen Schnittstelle) existiert der spezielle Filename PRN:. Auch mit manchen externen Programmen funktioniert die Redirection. Fr Experten: sie funktioniert genau mit den Programmen, die die GEMDOS-Funktion Fwrite (Nummer $40) verwenden. Analoges gilt fr die Eingabe: ask